# coding: utf-8
'''
Created on 30 avr. 2011

@author: shin
'''

from business.DamierStatus import DamierStatus

class GameStatus(object):
    '''
      La classe qui sera transmise à l'UI pour que celle-ci ait les informations
    nécessaires à ses mises à jour.
    Pour l'instance de GameStatus contiendra la totalité des informations du
    jeu et les différents parties de l'UI choisieront ce qui les intéressent.
    '''

    def __init__(self, damier):
        '''
        Initialisation des attributs à nulles :
        - terrain
        - persoChoix
        - persoCible
        - action
        - damier
        - activite
        '''
        self.terrain = ""
        self.terrainLabel = "Type\nAltitude\nFranchissable"
        self.perso = "Nom\n" +\
                     "Type\n" +\
                     "Points de vie\n"+\
                     "Constitution\n"+\
                     "Taille\n"+\
                     "Degats\n"+\
                     "Franchissable\n"+\
                     "Joueur\n"+\
                     "Endurance\n"+\
                     "Intelligence\n"+\
                     "Energie\n"
        self.persoChoix = ""
        self.persoCible = ""
        self.action = []
        self.damier = DamierStatus(damier)
        self.activite = ""
        self.tour = ""
        

    def maj_terrain(self, case):
        '''
        prépare l'affichage de la zone ui terrain
        '''
        self.terrain = ""
        if case == None: return
        self.terrain  = case.type + "\n"
        self.terrain += str(case.hauteur) + "\n"
        if case.franchissable:
            self.terrain += "oui\n"
        else: 
            self.terrain += "non\n"
        
    def maj_perso(self, num, personnage, resultat):
        '''
        prépare l'affichage de la zone ui personnage selectionné ou ciblé
        '''
        if (num == 1):
            self.persoChoix = ""
            if personnage == None: return
            self.persoChoix = self._change(personnage, resultat)
        else:
            self.persoCible = ""
            if personnage == None: return
            self.persoCible = self._change(personnage, resultat)  

    def _change(self, personnage, resultat):
        '''
        aide à la méthode maj_perso
        '''
        
        perso =  personnage.nom  + "\n"
        perso += personnage.type + "\n"
        perso += str(personnage.pointDeVie)
        if resultat != None:
            if resultat[0] == "degats":
                perso += ' -> '
                perso += str(personnage.pointDeVie - resultat[1])
            elif resultat[0] == "soins":
                perso += ' -> '
                perso += str(personnage.pointDeVie + resultat[1])
        perso += '\n'
        
        perso += str(personnage.constitution)  + "\n"
        perso += str(personnage.taille)        + "\n"
        perso += str(personnage.degats)        + "\n"
        if personnage.franchissable:
            perso += "oui\n"
        else:
            perso += "non\n"
        perso += str(personnage.joueur)
        if resultat != None :
            if resultat[0] == "Joueur":
                perso += ' -> '
                perso += str(resultat[1])
        perso += '\n'
        
        perso += str(personnage.endurance)    + "\n"
        perso += str(personnage.intelligence) + "\n"
        perso += str(personnage.energie)      + "\n"
        
        return perso
        
    def maj_action(self, personnage):
        '''
        prépare l'affichage de la zone ui action
        '''
        self.action = []
        if personnage == None: return
        for competence in personnage.competence:
            if (personnage.competence[competence] == 1):
                self.action.append(competence)

    def maj_caseDamier(self, case, consigne):
        '''
        ajoute une consigne pour la zone ui correspondant à la case
        '''
        if case == "Toutes":
            if consigne == "Normal":
                for nom in self.damier.cases:
                    self.damier.cases[nom] = []
        else:
            if consigne == "Normal":
                self.damier.cases[case] = []
            else:
                self.damier.cases[case].append(consigne)
    
    def maj_damier(self, damier):
        '''
        prépare les dimensions de la zone ui damier
        '''
        self.damier.height = damier.height
        self.damier.width = damier.width
    
    def maj_activite(self, texte):
        '''
        modifie la liste de déroulement des prochainnes actions
        '''
        self.activite = texte

    def maj_tour(self, texte):
        self.tour = texte